\begin{tikzpicture}
  \umlclass{Cargo}{tracking Id}{};
  \umlclass[below left= 2cm of Cargo]{Customer}{customer Id\\name}{};
  \umlclass[below right= 1cm of Cargo]{Delivery History}{}{};
  \umlclass[below = 1cm of Delivery History]{Delivery Specification}{}{};
  \umlclass[right = 2cm of Delivery History]{Handling Event}{}{};
  \umlclass[below = 3cm of Handling Event]{Carrier Movement}{}{};
  \umlclass[below = 3cm of Delivery Specification]{Location}{}{};
  \umlHVuniassoc[pos1=0.1, pos=1.9, arg1=role, mult1=1, mult2=1]{Cargo}{Customer};
  \umlVHuniassoc[mult1=1..*, pos1=1.5]{Cargo}{Delivery History};
  \umluniassoc[mult=1..*]{Delivery History}{Handling Event};
  \umlVHuniassoc[pos1=1.5, pos2=0.1, arg1=handle, mult2=*]{Handling Event}{Cargo};
  \umluniassoc[mult=1..*]{Handling Event} {Carrier Movement};
  \umlVHuniassoc[pos1=1.5, arg1=from]{Carrier Movement}{Location};
  \umlHVuniassoc[pos1=1.5, arg1=to]{Carrier Movement}{Location};
  \umluniassoc[pos1=0.5, arg1=destination, anchor1=120, anchor2=120]{Delivery Specification} {Location}; 
  \umluniassoc[geometry=|-, pos1=0.8, name=CargoSpecification, arg1=goal, anchor1=120]{Cargo}{Delivery Specification};
  \umlnote[below left=2cm of Delivery Specification]{CargoSpecification-1}{关联 Delivery Specification值对象};


  \begin{pgfonlayer}{background}
    \node[fit=(Cargo)(Delivery History)(Delivery Specification), draw, dashed, color=black!20]{};
  \end{pgfonlayer}  
\end{tikzpicture}